<?php
use Symfony\Component\HttpFoundation\Response;

if ( ! function_exists('stored') ) {
    /**
     * 创建资源成功后响应
     *
     * @param array $data 参数
     * @param string $message 消息
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function stored(array $data=[], string $message='创建成功')
    {
        return respond($data, $message);
    }
}

if ( ! function_exists('updated') ) {
    /**
     * 更新资源成功后响应
     *
     * @param array $data 参数
     * @param string $message 消息
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function updated(array $data=[], string $message='更新成功')
    {
        return respond($data, $message);
    }
}

if ( ! function_exists("deleted") ) {
    /**
     * 删除资源后成功响应
     *
     * @param string $message 消息
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function deleted(string $message="删除成功")
    {
        return message($message, Response::HTTP_OK);
    }
}

if ( ! function_exists("accepted") ) {
    /**
     * 请求已被放入任务队列响应
     *
     * @param string $message 消息
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function accepted(string $message="请求已接收,请等待处理")
    {
        return message($message, Response::HTTP_ACCEPTED);
    }
}

if ( ! function_exists("notFound") ) {
    /**
     * 未找到资源响应
     *
     * @param string $message 消息
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function notFound(string $message="您访问的资源不存在")
    {
        return message($message, Response::HTTP_NOT_FOUND);
    }
}

if ( ! function_exists("internalError") ) {
    /**
     * 服务端未知错误响应
     *
     * @param string $message 消息
     * @param int $code 状态码
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function internalError(string $message="未知错误导致请求失败", int $code=Response::HTTP_INTERNAL_SERVER_ERROR)
    {
        return message($message, $code);
    }
}

if ( ! function_exists("failed") ) {
    /**
     * 错误的请求响应
     *
     * @param string $message 消息
     * @param int $code 状态码
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function failed(string $message, int $code=Response::HTTP_BAD_REQUEST)
    {
        return message($message, $code);
    }
}

if ( ! function_exists("success") ) {
    /**
     * 请求成功响应
     *
     * @param array $data 参数
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function success(array $data=[])
    {
        return respond($data);
    }
}

if ( ! function_exists("message") ) {
    /**
     * 消息响应
     *
     * @param string $message 消息
     * @param int $code 状态码
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function message(string $message, int $code=Response::HTTP_OK)
    {
        return respond([], $message, $code);
    }
}

if ( ! function_exists('respond') ) {
    /**
     * 生成响应体
     *
     * @param array $data 参数
     * @param string $message 消息
     * @param int $code 状态码
     * @param array $headers 响应头
     * @author zx
     * @date 2018-11-09
     * @return \Illuminate\Http\JsonResponse
     */
    function respond(array $data=[], string $message="请求成功", int $code=Response::HTTP_OK, array $headers=[])
    {
        return response()->json([
            'code' => $code,
            'message' => $message,
            'data' => $data
        ], $code, $headers);
    }
}

if ( ! function_exists( 'resultSet' ) ) {
    /**
     * 返回数组
     *
     * @param int $code 状态码
     * @param string $message 消息体
     * @param array $data 数据
     * @author zx
     * @date 2019-01-16
     * @return Array
     */
    function resultSet(int $code=Response::HTTP_OK, string $message="操作成功", array $data=[])
    {
        return [
            'code' => $code,
            'message' => $message,
            'data' => $data
        ];
    }
}